package com.resou.reader.discovery.bookdetail;

import com.resou.reader.api.entry.BookListBean;
import com.resou.reader.base.BasePresenter;
import com.resou.reader.base.BaseView;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;

import java.util.List;

public interface IBookListContract {
    interface IBookListView extends BaseView {

        /**
         * 显示书籍详情的回调
         *
         * @param listBeans
         */
        void showDetail(BookListBean listBeans);

        /**
         * 显示书籍下的作者回调
         *
         * @param listBookBeans
         */
        void showAuthor(List<BookListBean.ListBookBean.BooksBean> listBookBeans);

        /**
         * 刷新控件的实例
         *
         * @return
         */
        SmartRefreshLayout getSmartRefreshLayout();

        /**
         * 收藏成功
         */
        void collectionSuccess();

        /**
         * 取消收藏
         */
        void cancellCollection();

        /**
         * 点赞成功
         */
        void showPraiseSuccess();

        /**
         * 取消点赞
         */
        void showCancellPraise();

        /**
         * 用于显示用户操作后的响应的信息
         *
         * @param info
         */
        void showInfo(String info);

        void joinBookList();

        /**
         * 同步本地书架后的数据
         *
         * @param booksBeanList
         */
        void showlocalAndRemoteData(List<BookListBean.ListBookBean.BooksBean> booksBeanList);

    }

    interface IBookListPresenter extends BasePresenter {
        /**
         * P层调用书单详情的接口
         *
         * @param bookListId
         * @param page
         */
        void quearBookListDetail(String bookListId, int page);

        /**
         * P层收藏接口
         *
         * @param bookListId
         */
        void collectionBookList(String bookListId);

        /**
         * 取消收藏
         */
        void cancellCollection(String bookListId);

        /**
         * 点赞
         *
         * @param bookId
         */
        void bookLike(String bookId);

        /**
         * 取消点赞
         *
         * @param bookId
         */
        void cancellBookLike(String bookId);

        /**
         * 添加到书架 已登录
         *
         * @param bookId
         */
        void addBookListLogined(String bookId);

        /**
         * 添加到书架 本地数据库未登录
         */
        void addBookList_noLogin(BookListBean.ListBookBean.BooksBean book);

        /**
         * 未登录情况下，将本地数据与服务器数据同步加入书架
         * @param booksBeans
         */
        void requestlocalSysRemoteBookList(List<BookListBean.ListBookBean.BooksBean> booksBeans);
    }

}
